// 引入showModal
import {navigateTo, request, requestPayment, showToast} from '../../request/index'
//Page Object
Page({
    data: {
        // 接收缓存中获取的地址
        address: {},
        cart: [],
        totalPrice: 0,
        totalNum: 0
    },

    //options(Object)
    onLoad: function(options){
        
    },
    onReady: function(){
        
    },
    onShow: function(){
        // 从缓存中取出地址，并赋给address
        const address = wx.getStorageSync('address');
        this.setData({address});
        // 从缓存中取出cart(注意cart为空的情况)
        let cart = wx.getStorageSync('cart') || [];
        // 过滤后的购物车数组(这些商品是从cart页面选中的，所以checked=true)
        cart = cart.filter(v=>v.checked);
        // 修改底部工具栏各项的状态
        let totalPrice = 0;
        let totalNum = 0;
        // 计算对被选中商品的总价和数量、全选状态
        cart.forEach(v => {
            totalPrice += v.num * v.goods_price;
            totalNum += v.num;
        })
        // 将修改后的数据重新放回data和缓存中
        this.setData({
            cart,
            totalPrice,
            totalNum,
            address
        })
    },

    onHide: function(){

    },
    onUnload: function(){

    },
    onPullDownRefresh: function(){

    },
    onReachBottom: function(){

    },
    onShareAppMessage: function(){

    },
    onPageScroll: function(){

    },
    //item(index,pagePath,text)
    onTabItemTap:function(item){

    },

    // 支付按钮功能（支付流程：创建订单 -- 准备预支付 -- 发起微信支付 -- 查询订单）
    async handleOrderPay() {
        try{
        // 一.创建订单（流程：获取token -- 准备参数 -- 发送请求，获取订单编号）
            // 1.获取token(用于用户的身份验证)
            // 先判断缓存中有没有token：没有token，跳转至授权页面获取token；有token，准备参数 
            const token = wx.getStorageSync('token');
            if(!token){
                await navigateTo({url:'/pages/auth/auth'});
                return;
            }
            // 2.准备参数
            // 2.1准备：请求头参数(参数值为token)
            // const header = {Authorization:token};
            // 2.2准备：请求体参数
            const order_price = this.data.totalPrice;
            const consignee_addr = this.data.address.all;
            let goods = [];
            const cart = this.data.cart;
            cart.forEach(v => goods.push({
                goods_id: v.goods_id,
                goods_number: v.num,
                goods_price: v.goods_price
            }));
            // 将准备好的参数封装打包
            const orderData = {order_price, consignee_addr, goods};
            // 3.发送请求，获取订单编号
            const {data:res} = await request({url:'/my/orders/create', method:'POST', data:orderData});
            const {order_number} = res.message;
        // 二.发起预支付接口,获取支付参数pay
            const {data:result} = await request({url:'/my/orders/req_unifiedorder', method:'POST', data:{order_number}});
            const {pay} = result.message;
        // 三.发起微信支付(这里用户就可以点击支付按钮付款了)
            await requestPayment(pay);
        // 四.查询订单支付状态
            const res1 = await request({url:'/my/orders/chkOrder', method:'POST', data:{order_number}});
            await showToast({title:'支付成功!'});
        // 五.支付成功后:
            // 1.手动删除缓存中已经支付的商品
            let newCart = wx.getStorageSync('cart');
            newCart = newCart.filter(v => !v.checked);
            wx.setStorageSync('cart', newCart);
            // 2.支付成功后，跳转至订单页面
            navigateTo({url:'/pages/order/order'});
        
        }catch(e){
            await showToast({title:'支付失败!'});
            console.log(e);
        }
    }
});